网工Python之路之paramiko 模块实验(六)FTP推送备份文件
加群交流在后台回复“加群”,添加小编微信,小编拉你进去
后台回复“724”获取入门资料
感谢知乎两位大佬:@弈心和@朱嘉盛
@弈心大佬的实验主要是基于 linux 系统、思科设备或 GNS3 模拟器完成。
@朱嘉盛大佬考虑到当前在国内华为较为主流,也用 Windows 系统,尝试用华为的真机或者 eNSP 模拟器,把书中提及的实验做一做,方便大家学习记录,方便交流。
小编这里采用eve-ng+liunx来模拟实践思科部分的实验效果,以及采用ensp+windows复现一遍华为的实验。
实验平台:WIN10
使用工具:Evn-ng、python 3.6.8
注意:
书中使用了 192.168.2.0/24 ,我这里才有eve桥接的虚拟网段192.168.242.0/24来演示本次实验。
【SSH 服务端】LSW x,IP为 192.168.242.1x/24,连接到透明交换机SW1。
实验背景:
日常较多的备份方式有两种:
① 登录设备执行show run,然后抓取回显,保存成配置文件。
② FTP/SCP等方式登录网元,拷贝配置文件 startup-config文件。
方法①效率较低;
方法②需要每台网元都开启FTP服务器功能,安全性不高。
打破下惯性思维,我们能不能把方法②的客户端和服务器角色给反过来呢?这样不就只需一台服务器开启FTP server功能。待备份的网元都当FTP客户端角色即可,无需任何额外配置。 (日常交流中受群友启发,可见交流的重要性哈。感谢群友 @白天数星星 )
实验目的:
1)在Win10上部署FTP服务器,尝试手工登录网元完成一次配置文件推送。
2)使用paramiko实现自动登录网元(LSWx),批量推送配置文件到Win10上。
实验过程
实验拓扑搭建、账号配置调测等在“环境搭建”文章中我们已详细介绍,这里从略。
第 1 步,WIN10上部署FTP服务器
我们找一个很轻巧的Win10环境下可运行的FTP服务端软件3CDaemon,配置FTP账号密码,登录目录,点击“应用”、“确定”,然后启动FTP服务器功能。
梳理一下FTP服务器信息:
第 2 步,手工测试FTP推送备份文件
我们登上LSW1(192.168.242.11),从网元手工登录ftp服务器(192.168.242,1),执行一次备份文件推送。
至此,我们实验目的(1)完成。
第 3 步,创建Python脚本文件
import paramiko
import time
username = 'python'
password = '123'
iplist = ['192.168.242.11','192.168.242.12','192.168.242.13','192.168.242.14','192.168.242.15']
for ip in iplist:
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip,username=username,
password=password,look_for_keys=False)
print('=-=-=-=-=-=-=-=-=-=-=-=-=-=')
print('已经成功登陆交换机 ' + ip)
command = ssh_client.invoke_shell()
command.send('conf t\n')
time.sleep(0.5)
command.send('ip ftp username python\n')
time.sleep(0.5)
command.send('ip ftp password 123456\n')
time.sleep(0.5)
command.send('exit\n')
time.sleep(0.5)
command.send('copy startup-config ftp:\n')
time.sleep(0.5)
command.send('192.168.242.1 \n')
time.sleep(0.5)
command.send(ip+'_config.txt\n')
time.sleep(0.5)
output = command.recv(65535).decode('GB2312')
print(output)
ssh_client.close()
第 4 步,运行Python脚本
实验平台:WIN10
使用工具:eNSP v1.3.00.100、python 3.7.3
注意:
书中使用了 192.168.2.0/24 ,我这里才有eve桥接的虚拟网段192.168.242.0/24来演示本次实验。
【SSH 服务端】LSW x,IP为 192.168.242.1x/24,连接到透明交换机SW1。
实验背景:
日常较多的备份方式有两种:
① 登录设备执行display cur,然后抓取回显,保存成配置文件。
② FTP/SCP等方式登录网元,拷贝配置文件 flash:/vrpcfg.zip。
方法①效率较低;
方法②需要每台网元都开启FTP服务器功能,安全性不高。
打破下惯性思维,我们能不能把方法②的客户端和服务器角色给反过来呢?这样不就只需一台服务器开启FTP server功能。待备份的网元都当FTP客户端角色即可,无需任何额外配置。 (日常交流中受群友启发,可见交流的重要性哈。感谢群友 @白天数星星 )
实验目的:
1)在Win10上部署FTP服务器,尝试手工登录网元完成一次配置文件推送。
2)使用paramiko实现自动登录网元(Layer3Switch-x),批量推送配置文件到Win10上。
实验过程
实验拓扑搭建、账号配置调测等在“环境搭建”文章中我们已详细介绍,这里从略。
第 1 步,WIN10上部署FTP服务器
我们找一个很轻巧的Win10环境下可运行的FTP服务端软件3CDaemon,配置FTP账号密码,登录目录,点击“应用”、“确定”,然后启动FTP服务器功能。
梳理一下FTP服务器信息:
第 2 步,手工测试FTP推送备份文件
我们登上LSW1(192.168.242.11),从网元手工登录ftp服务器(192.168.242,1),执行一次备份文件推送。
至此,我们实验目的(1)完成。
第 3 步,创建Python脚本文件
import paramiko
import time
username = 'python'
password = '123'
iplist = ['192.168.242.11','192.168.242.12','192.168.242.13','192.168.242.14','192.168.242.15']
for ip in iplist:
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip,username=username,
password=password,look_for_keys=False)
print('=-=-=-=-=-=-=-=-=-=-=-=-=-=')
print('已经成功登陆交换机 ' + ip)
command = ssh_client.invoke_shell()
command.send('ftp 192.168.242.1\n')
time.sleep(0.5)
command.send('python\n')
time.sleep(0.5)
command.send('123456\n')
time.sleep(0.5)
command.send('bin\n')
command.send('put vrpcfg.zip '+ip +'_vrpcfg.zip'+'\n')
time.sleep(0.5)
command.send('quit\n')
time.sleep(0.5)
output = command.recv(65535).decode('GB2312')
print(output)
ssh_client.close()
第 4 步,运行Python脚本
实验小结
网工Python之路之paramiko 模块实验(五)异常处理
网工Python之路之paramiko 模块实验(四)分组操作
网工Python之路之paramiko 模块实验(三)读取文件
网工Python之路之paramiko 模块实验(二)循环遍历
网工Python之路之paramiko 模块实验(一)初来乍到
可去知乎关注两位大佬:
https://www.zhihu.com/column/c_1357111055186104320
https://zhuanlan.zhihu.com/p/34932386
【小程序体验】